﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Caffeine.Core.Test.TestModel
{
    public class ModelForMetadataTestingB : ModelForMetadataTesting
    {
        #region SerializableType Property

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(SerializableObject), "SerializableTypeProperty", Caffeine.Core.ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<SerializableObject> _SerializableTypeProperty = null; //Will be set by reflection.

        /// <summary>
        /// Gets the SerializableType backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public Caffeine.Core.ModelProperty<SerializableObject> SerializableTypeProperty
        {
            get { return _SerializableTypeProperty; }
        }

        /// <summary>
        /// Gets or sets the SerializableTypeProperty.Value value. This property supports change notification. If the SerializableTypeProperty.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableTypeProperty - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public SerializableObject SerializableType
        {
            get { return SerializableTypeProperty.Value; }
            set { SerializableTypeProperty.Value = value; }
        }

        /// <summary>
        /// Gets the SerializableTypeProperty.CommittedValue value. This property supports change notification. If the SerializableTypeProperty.CommittedValue value changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableType + "CommittedValue"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public SerializableObject SerializableTypeCommittedValue
        {
            get { return SerializableTypeProperty.CommittedValue; }
        }

        /// <summary>
        /// Gets the SerializableTypeProperty.IsDirty flag. This property supports change notification. If the SerializableTypeProperty.IsDirty flag changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableType + "IsDirty"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public bool SerializableTypeIsDirty
        {
            get { return SerializableTypeProperty.IsDirty; }
        }

        /// <summary>
        /// Gets the SerializableTypeProperty.IsInvalid flag. This property supports change notification. If the SerializableTypeProperty.IsInvalid flag changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableType + "IsInvalid"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public bool SerializableTypeIsInvalid
        {
            get { return SerializableTypeProperty.IsInvalid; }
        }

        /// <summary>
        /// Gets the SerializableTypeProperty.IsDefault flag. This property supports change notification. If the SerializableTypeProperty.IsDefault flag changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableType + "IsDefault"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public bool SerializableTypeIsDefault
        {
            get { return SerializableTypeProperty.IsDefault; }
        }

        /// <summary>
        /// Gets the SerializableTypeProperty.ValidationErrors enumeration. This property supports change notification. If the SerializableTypeProperty.ValidationErrors enumeration changes,
        /// it will cause a change notification event for this property. This property must follow the [SerializableType + "ValidationErrors"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public System.Collections.Generic.IEnumerable<Caffeine.Core.ValidationError> SerializableTypeValidationErrors
        {
            get { return SerializableTypeProperty.ValidationErrors; }
        }

        #endregion
    }
}
